'''
    第一周 作业二 统计嵌套目录的文件大小
    使用递归循环调用
    @author  宛茹
'''

#  引入文件读写的库
import os

# 定义一个全局变量 用于统计目录文件的大小
totalSize = 0

# 定义统计目录大小的函数
def calDirSize(fileDir):
    '''
    统计目录大小的函数
    :param filePath: 文件目录，有可能是文件，有可能是目录
    :return: 返回文件目录的所有文件大小的和
    '''
    # 声明全局变量调用
    global totalSize
    # 判断该参数是文件还是目录，如果是文件 直接读取文件大小
    if os.path.isfile(fileDir):
        # print('this is a file')
        totalSize += os.path.getsize(fileDir)
    elif os.path.isdir(fileDir):
        # print('this is a directory')
        # 获取被赋值目录中所有文件的信息
        dirList = os.listdir(fileDir)
        # 遍历所有文件
        for f in dirList:
            # 为遍历的文件添加目录路径
            curFile = os.path.join(fileDir,f)
            # 判断是否是文件，文件直接读取大小
            if os.path.isfile(curFile):
                totalSize += os.path.getsize(curFile)
            # 判断是否是目录，如果是目录进行递归循环调用
            if os.path.isdir(curFile):
                calDirSize(curFile)
    else:
        print('文件目录无效')
# end of def calDirSize

# 测算统计目录大小
testPath = os.getcwd()
print(testPath)
# D:\Program Files   1,076,401,587 字节
# D:\Program Files\JetBrains\PyCharm 2019.2.3\build.txt 14 字节
# 如果要测试某个指定目录  该怎么输入
testPath = input('请输入文件或目录：')
calDirSize(testPath)
print('该文件大小总共为：',totalSize,'字节')